const fs = require('fs'); // fs 帮助我们读取文件
const path = require('path');
const {
    OpenAI
} = require('openai');
require('dotenv').config();

// 模型 ollama
// 给它喂私有数据库，不怕私有被外界大模型训练了
// 安全
const openai = new OpenAI({
    apiKey: process.env.OPENAI_API_KEY,
    baseURL: process.env.OPENAI_BASE_URL
});

const testQuestion = '有多少门课程？';

function readCourseInfo() {
    try {
        const filePath = path.join(__dirname, 'lesson.txt');
        return fs.readFileSync(filePath, 'utf-8');
    } catch (error) {
        console.log(error);
        return '';
    }
}

async function answerQuestion(question) {
    // 检索
    const courseInfo = readCourseInfo();
    // console.log(courseInfo);
    if (!courseInfo) {
        return '课程信息不存在';
    }
    try {
        const prompt = `
        你是一个课程助手，你的任务是根据课程信息回答问题。
        课程信息：${courseInfo}
        问题：${question}
        `;
        const res = await openai.chat.completions.create({
            model: 'gpt-3.5-turbo',
            messages: [
                {
                    role: 'system',
                    content: '你是一个课程助手，你的任务是根据课程信息回答问题。'
                },
                {
                    role: 'user',
                    content: prompt
                }
            ],
            temperature: 0.1
        });
        return res.choices[0].message.content;
    } catch (error) {
        console.log(error);
        return '抱歉，处理您的问题时出现错误';
    }
}

answerQuestion(testQuestion)
    .then(answer => {
        console.log('问题：', testQuestion);
        console.log('回答：', answer);
    })